使用SQL查询数据时报错The sql scanned rows of main table exceeds the quota, main table rows quota is 100000

当使用SQL查询数据出现扫描到的行数或者数据量超过限制的情况时,您可以根据具体的查询条件创建二级索引或多元索引来优化查询。

问题现象

使用SQL查询数据时出现如下报错:

[Message]:The sql scanned rows of main table exceeds the quota, main table rows quota is 100000

可能原因

如果使用SQL查询数据时使用的条件为非分区键,则会造成全表扫描数据,可能会出现扫描到的行数或者数据量超过限制的情况。

重要

目前SQL单次扫描支持的最大行数为100000行,最大数据量为128 MB,最长时间为30秒。

解决方案

使用SQL查询数据时,请确保查询条件包含主键列且符合最左匹配原则,并为SQL语句添加limit参数来控制返回的行数。

如果查询条件不满足上述条件,您还可以通过如下方式进行查询加速。更多信息,请参见索引选择策略

  • 如果通过创建二级索引即可符合查询条件包含主键列且符合最左匹配原则,则建议您创建二级索引进行查询加速。更多信息,请参见二级索引简介

  • 如果查询条件中包括聚合函数(例如count、sum、avg)、group by或者基于非主键的过滤查询,则建议创建多元索引进行查询加速。更多信息,请参见多元索引简介

    如果已为数据表创建多元索引仍出现该错误,建议检查多元索引中是否包含所有查询时用到的字段。